package com.softline.documentsmall.dao;

import com.softline.documentsmall.entity.Classification;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;
import java.util.List;
import java.util.Map;

@Mapper
public interface ClassificationMapper {

    int deleteByPrimaryKey(Integer id);

    int insert(Classification record);

    int insertSelective(Classification record);

    Classification selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(Classification record);

    int updateByPrimaryKey(Classification record);

    /**
     * 根据一级分类去查询一级分类相同的ID为此条分类ID的N条三级分类信息
     * @param firstType  一级分类
     * @param id 主键
     * @return
     */
    List<Classification> selectListByFirstTypeAndId(@Param("firstType") String firstType,@Param("id") Integer id);


    /**
     * 根据语种类型查询所有一级分类
     * @param type
     */
    List<Map<String,Object>> selectFirstTypeByGroupBy(@Param("type") String type);

    /**
     *根据一级分类查找下面所有二级分类
     * @param firstType
     * @return
     */
    List<Map<String,Object>> selectSeconds(String firstType);

    /**
     * 根据二级分类名称查询下面的三级分类
     * @param title 二级分类
     * @return
     */
    List<Classification> selectThirdList(String title);

    /**
     * 根据一级术语查询下面的3个二级术语
     * @param firstType
     * @return
     */
    List<Map<String, Object>> selectLevelTwoClassification(String firstType);

    /**
     * 根据二级分类查询下面的三级分类
     * @param name
     * @return
     */
    List<Map<String, Object>> selectLevelThreeClassification(String name);

    /**
     * 根据二级术语类型和code查询一条术语
     * @param code  code
     * @param type 二级术语类型
     * @return
     */
    Classification selectByTwoCodeAndType(@Param("code") String code, @Param("type")String type);

    /**
     * 根据三级术语类型和code查询一条术语
     * @param code code
     * @param type 三级术语类型
     * @return
     */
    Classification selectByThreeCodeAndType(@Param("code") String code, @Param("type")String type);
}
